// 移动零

package Leetcode;

// 两次遍历
class Solution_283_1 {
    public void moveZeroes(int[] nums) {
        int left = 0, right = 0;
        // 第一次遍历将非零的数字都移动到左边
        while (right < nums.length) {
            if (nums[right] != 0) {
                nums[left] = nums[right];
                left++;
            }
            right++;
        }
        // 第二次遍历将后续置零
        for (int i = left; i < nums.length; i++)
            nums[i] = 0;
    }
}

// 一次遍历，参考快速排序，我们以0为枢轴，等于0放在右边，不等于0放在左边

class Solution_283_2 {
    public void moveZeroes(int[] nums) {
        int j = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j++] = temp;
            }
        }
    }
}